package com.xb;

import jdk.internal.org.objectweb.asm.tree.TryCatchBlockNode;
import org.springframework.transaction.annotation.Transactional;

import java.util.concurrent.CyclicBarrier;

/**
 * @program: register-jerry
 * @description: CyclicBarrier 组件玩法
 * @author: xu.bin
 * @create: 2020-11-17
 */
@Transactional
public class CyclicBarrierDemo {
    static public void main(String []args){
        CyclicBarrier cyclicBarrier=new CyclicBarrier(2,new Runnable(){
            @Override
            public void run() {
                System.out.println("所有线程执行完成，可以进行合并操作");
            }
        });
        new Thread(){
            @Override
            public void run() {
                try {
                    System.out.println("线程1正在执行任务，请稍后");
                    cyclicBarrier.await();
                    System.out.println("所有线程完成，可以进行结果合并，线程1");
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }.start();
        new Thread(){
            @Override
            public void run() {
                try {
                    System.out.println("线程2正在执行任务，请稍后");
                    cyclicBarrier.await();
                    System.out.println("所有线程完成，可以进行结果合并，线程1");
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }.start();
    }
}